专利摘要:
Es werden Verfahren zum Schutz von Software (28), die zur Ausführung durch einen Prozessor eines tragbaren Datenträgers vorgesehen ist oder durch einen solche Prozessor ausgeführt wird, gegen Angriffe angegeben. Bei diesen Verfahren wird, ausgehend von einer lauffähigen ersten Konfiguration der Software (28), zumindest ein Abschnitt der Software (28) zumindest hinsichtlich seiner Position verändert, um eine lauffähige zweite Konfiguration der Software (28) zu erhalten, die bei gleicher Funktion eine veränderte Speicherbelegung in einem nichtflüchtigen überschreibbaren Speicher des tragbaren Datenträgers aufweist. Die Erfindung umfaßt ferner Computerprogrammprodukte, eine programmgesteuerte Vorrichtung und eine Mehrzahl von tragbaren Datenträgern mit entsprechenden Merkmalen. Die Erfindung stellt eine verbesserte Technik zum Schutz von Software (28) gegen Angriffe bereit.
公开号:DE102004011488A1
申请号:DE102004011488
申请日:2004-03-09
公开日:2005-10-13
发明作者:Wolfgang Rankl
申请人:Giesecke and Devrient GmbH;
IPC主号:G06F12-14
专利说明:
[0001] DieErfindung betrifft das technische Gebiet des Schutzes von Software,die durch einen Prozessor eines tragbaren Datenträgers ausgeführt werden solloder ausgeführtwird, gegen Angriffe. Ein tragbarer Datenträger im Sinne des vorliegendenDokuments kann insbesondere eine Chipkarte (smart card) in unterschiedlichenBauformen oder ein Chipmodul oder eine sonstige ressourcenbeschränkte Vorrichtungsein.
[0002] Chipkartenund andere tragbare Datenträger werdenhäufigfür sicherheitskritischeAnwendungen wie z.B. zur Autorisierung von Finanztransaktionen oderzur Verschlüsselungoder elektronischen Signatur von Dokumenten eingesetzt. Durch einenerfolgreichen Angriff; bei dem z.B. Daten und/oder Berechnungsvorgänge ausgespäht und/odermanipuliert werden, könntegroßerSchaden entstehen. Deshalb kommt dem Schutz des Datenträgers gegenAngriffe aller Art entscheidende Bedeutung zu. Kapitel 8.2 des Buches "Handbuch der Chipkarten" von W. Rankl undW. Effing, Hanser Verlag, 3. Auflage 1999, Seiten 469–519, beschreibteine Reihe heute bekannter Angriffsverfahren und Abwehrmaßnahmen.
[0003] TragbareDatenträgerwerden heute in großenStückzahlenhergestellt. Die einzelnen Datenträger einer Baureihe weisen jeweilsein identisches Betriebssystem und identische Anwendungssprogrammeauf. Zwar werden bei der Personalisierung der Datenträger unterschiedlichepersönlicheDaten der zukünftigenBenutzer in die Datenträgereingespielt; die Speicherbelegung der Datenträger sowohl im Hinblick aufden gesamten ausführbarenProgrammcode als auch im Hinblick auf die Position der Individualisierungsdatenbleibt jedoch bei allen Datenträgernder Baureihe identisch.
[0004] DieTatsache, das alle Datenträgereiner Baureihe in ihrer Speicherbelegung übereinstimmen, stellt einemöglicheSchwachstelle dar. Wenn einem Angreifer ein erfolgreicher Angriffgegen einen einzigen Datenträgergelingt, sind damit alle Datenträger derBaureihe kompromittiert. Überdiessteht Angreifern, die sich mehrere Datenträger derselben Baureihe beschaffen,Material fürstatistische Untersuchungen zur Verfügung. Ferner steigert die Tatsache,daß einerfolgreicher Angriff auf viele weitere Datenträger übertragbar ist, die "Attraktivität" der entsprechenden Baureihefür potentielleAngreifer.
[0005] Ausdem US-Patent 6,006,328 ist ein Verfahren zum Schutz von Anwendungsprogrammen,die zur Ausführungdurch üblicheArbeitsplatzrechner vorgesehen sind, gegen Ausspähung und andere Angriffe bekannt.Bei diesem Verfahren wird eine lauffähige Konfiguration des Anwendungsprogrammsverschlüsseltund durch zusätzlichenLade- und Überwachungscodeergänzt.Wenn das so erzeugte Programmpaket auf einem Arbeitsplatzrechnergestartet wird, wird zunächstder Lade- und Überwachungscodeausgeführt.Dieser entschlüsseltdas Anwendungsprogramm und stellt es im Speicher des Arbeitsplatzrechnersin seiner ursprünglichenKonfiguration wieder her. Der dann im Arbeitsplatzrechner ausgeführte Programmcodeweist dieselbe Speicherbelegung wie der ursprüngliche Programmcode auf.
[0006] DieErfindung hat die Aufgabe, auf dem Gebiet der tragbaren Datenträger eineverbesserte Technik zum Schutz von Software gegen Angriffe bereitzustellen.Insbesondere sollen durch die Erfindung die Auswirkungen eines erfolgreichenAngriffs gegen einen tragbaren Datenträger im Hinblick auf andereDatenträgerderselben Baureihe reduziert werden. In bevorzugten Ausgestaltungensoll auch ein Angriff gegen einen einzelnen Datenträger erschwertwerden.
[0007] Erfindungsgemäß wird dieseAufgabe ganz oder zum Teil gelöstdurch ein Verfahren zum Schutz von Software mit den Merkmalen desAnspruchs 1, ein Verfahren zum Erzeugen von Software mit den Merkmalendes Anspruchs 6, Computerprogrammprodukte gemäß den Ansprüchen 19 und 20, eine programmgesteuerteVorrichtung gemäß Anspruch 21und eine Mehrzahl von tragbaren Datenträgern gemäß Anspruch 22. Die abhängigen Ansprüche definierenbevorzugte Ausgestaltungen der Erfindung.
[0008] DieErfindung geht von der Grundidee aus, die zu schützende Software individuellfür jedenDatenträgeroder zumindest jede Gruppe von Datenträgern zu konfigurieren. Mitanderen Worten wird erfindungsgemäß aus einer lauffähigen erstenKonfiguration der Software mindestens eine lauffähige zweite Konfiguration derSoftware erzeugt, so daß diemindestens eine zweite Konfiguration der Software die gleiche Funktionwie die erste Konfiguration, aber eine veränderte Speicherbelegung, aufweist.Die auf diese Weise individualisierte Software ist zum Einschreibenin einen nichtflüchtigen überschreibbaren Speicherdes Datenträgersvorgesehen oder wird innerhalb des Datenträgers in einem solchen Speicher generiert.
[0009] DieErfindung hat den erheblichen Vorteil, daß aus der Speicherbelegungeines Datenträgers nichtauf die Speicherbelegung eines anderen Datenträgers geschlossen werden kann.Selbst ein erfolgreicher, gegen einen Datenträger einer Baureihe gerichteterAngriff würdedaher die Sicherheit anderer Datenträger derselben Baureihe nichtkompromittieren. Angesichts des hohen Aufwands für einen erfolgreichen Angriffund des beschränktenNutzens für denAngreifer ist davon auszugehen, daß Datenträger, die mit dem erfindungsgemäßen Schutzmechanismusausgestattet sind, generell fürAngreifer weniger "attraktiv" werden.
[0010] Dererfindungsgemäße Schutzmechanismus betrifftSoftware, die zur Ausführungdurch einen Prozessor des tragbaren Datenträgers vorgesehen ist oder geradedurch einen solchen Prozessor ausgeführt wird. Der Begriff "Software" soll in diesem Zusammenhangnicht nur ausführbarenProgrammcode, sondern vorzugsweise auch konstante und variable Daten,die von diesem Programmcode angesprochen werden, umfassen. Mit anderenWorten soll in bevorzugten Ausgestaltungen der Begriff "Software" als die Gesamtheitaller zur Programmausführung benötigten Programmbefehleund Daten verstanden werden. In anderen Ausführungsformen wird dagegen dieErfindung nur im Hinblick auf die im strengen Sinne ausführbarenTeile der Software angewendet.
[0011] Besondersbevorzugt sind Ausgestaltungen, bei denen die Software ein Betriebssystemdes tragbaren Datenträgersoder ein Teil davon ist. Da das Betriebssystem besonders sicherheitskritischeFunktionen ausführt,könnenSchutzmaßnahmen,selbst wenn sie auf das Betriebssystem beschränkt sind, viele Angriffe wirksamverhindern. In Ausführungsalternativender Erfindung wird jedoch – alternativoder zusätzlichzum Schutz des Betriebssystems – mindestensein Anwendungsprogramm oder mindestens ein Teil davon in die erfindungsgemäßen Schutzmaßnahmeneinbezogen.
[0012] Vorzugsweiseist der nichtflüchtige überschreibbareSpeicher des Datenträgers,in den die individualisierte Software eingeschrieben wird, ein Flash-Speicher oder FeRAM(ferroelelectric random access memory). Der Datenträger enthält in bevorzugtenAusgestaltungen keinen maskenprogrammierten Festwertspeicher zurAufnahme von Programmcode, da sich die erfindungsgemäße Individualisierungnicht fürSoftware, die zur Speicherung in maskenprogrammiertem Festwertspeichervorgesehen ist, eignen würde.
[0013] Dieerfindungsgemäße Änderungder Software kann auf unterschiedliche Weise erfolgen, sofern dieFunktion der Software unverändertbleibt. Beispielsweise könnenAbschnitte der Software verschoben und/oder vertauscht werden. Alternativoder zusätzlichkönnenfunktionsneutrale Befehle und/oder Befehlssequenzen eingefügt oderentfernt werden, was in der Regel – aber nicht zwingend – eine Verschiebungvon Abschnitten der Software zum Ausgleich eines verändertenProgrammcodeumfangs nach sich zieht. Ferner wird in bevorzugten Ausgestaltungenberücksichtigt,daß gegebenenfalls mancheAbschnitte der Software nicht oder nur im Ganzen verschoben werdendürfen.In vorteilhaften Ausgestaltungen ist vorgesehen, daß Sprungziele undReferenzen – z.B.Zeiger auf konstante oder variable Daten – in der gesamten Softwarean die veränderteSpeicherbelegung angepaßtwerden.
[0014] Dieerfindungsgemäß erzeugteSoftware braucht nicht notwendigerweise einen zusammenhängendenSpeicherbereich zu belegen. In manchen Ausgestaltungen der Erfindungist vielmehr vorgesehen, den zur Verfügung stehenden nichtflüchtigen überschreibbarenSpeicher voll auszunutzen, wobei Lücken zwischen einzelnen Abschnittender Software in Kauf genommen werden.
[0015] Umeine besonders hohe Sicherheit zu erreichen, wird die Veränderungder Software vorzugsweise zufallsgesteuert – d.h. auf eine zwar möglicherweisedeterministische, aber fürDritte nicht vorhersagbare Weise – durchgeführt. Die Funktion der Softwaredarf nicht verändertwerden. Dies schließtjedoch nicht aus, daß zumindestProgrammabschnitte, die nicht absolut zeitkritisch sind, hinsichtlichihrer Ausführungszeitverändertwerden. Wenn z.B. funktionsneutrale Programmbefehle oder Sprungbefehle eingefügt odergelöscht werden,beeinflußtdies die Ausführungsgeschwindigkeitdes Programms. Eine solche Veränderungist in der Regel nicht nur unschädlich,sondern sogar vorteilhaft, weil sie Angriffe durch Laufzeitanalysenerschwert.
[0016] Daserfindungsgemäße Verfahrenkann sowohl innerhalb des tragbaren Datenträgers durch den Prozessor desDatenträgersals auch extern, z.B. in Zusammenhang mit der Herstellung oder Initialisierungoder Personalisierung des Datenträgers, ausgeführt werden.Im erstgenannten Fall greift der Prozessor des Datenträgers vorzugsweiseauf die bereits in ihrer ersten Konfiguration im nichtflüchtigen überschreibbarenSpeicher des Datenträgersbefindliche Software zu und verändertdiese, um die zweite Konfiguration zu erhalten. Dieser Vorgang kanneinmalig zu Beginn der Lebensdauer des Datenträgers oder in Reaktion auf einvorbestimmtes Ereignis durchgeführtwerden. Wenn das erfindungsgemäße Verfahrenextern ausgeführtwird, dient dies vorzugsweise dazu, eine Mehrzahl von Datenträgern mitindividualisierter Software zu versorgen.
[0017] Daserfindungsgemäße Computerprogrammproduktweist in einer ersten Ausgestaltung die Software in einer Mehrzahlunterschiedlich individualisierter Konfigurationen auf. In einerzweiten Ausgestaltung enthältdas Computerprogrammprodukt Programmbefehle, die das erfindungsgemäße Verfahrenimplementieren. Ein derartiges Computerprogrammprodukt kann einkörperlichesMedium sein, beispielsweise ein Halbleiterspeicher oder eine Disketteoder eine CD-ROM. Das Computerprogrammprodukt kann jedoch auch einnicht-körperlichesMedium sein, beispielsweise ein überein Computernetzwerk übermitteltesSignal. Insbesondere kann das Computerprogrammprodukt bei der Herstellungoder Initialisierung oder Personalisierung oder während desBetriebs des tragbaren Datenträgersoder zur Programmierung eines Verarbeitungsrechners eingesetzt werden.
[0018] Dieerfindungsgemäße programmgesteuerte Vorrichtungist in einer ersten Ausgestaltung ein Verarbeitungsrechner zur Erzeugungeiner Mehrzahl von unterschiedlich individualisierten Konfigurationender Software und in einer zweiten Ausgestaltung ein tragbarer Datenträger, derdie zur funktionsneutralen Veränderungder Software erforderliche Funktionalität aufweist. In bevorzugtenAusgestaltungen weist/weisen die Vorrichtung und/oder das ComputerprogrammproduktMerkmale auf, die den gerade beschriebenen und/oder den in den abhängigen Verfahrensansprüchen genanntenMerkmalen entsprechen.
[0019] WeitereMerkmale, Vorteile und Aufgaben der Erfindung gehen aus der folgendengenauen Beschreibung mehrerer Ausführungsbeispiele und Ausführungsalternativenhervor. Es wird auf die schematischen Zeichnungen verwiesen:
[0020] 1 zeigtein Blockdiagramm eines tragbaren Datenträgers nach einem Ausführungsbeispiel derErfindung,
[0021] 2 veranschaulichtein Beispiel einer erfindungsgemäßen Schutzmaßnahme,
[0022] 3 zeigtein Ablaufdiagramm eines Verfahrens nach einem Ausführungsbeispielder Erfindung, und
[0023] 4 veranschaulichteinen außerhalbdes DatenträgersausgeführtenVorgang des Erzeugens individualisierter Software.
[0024] Derin 1 dargestellte Datenträger 10 ist im vorliegendenAusführungsbeispielals Chipkarte ausgestaltet. Der Datenträger 10 weist auf einemeinzigen Halbleiterchip einen Prozessor 12 und eine Kommunikationsschnittstelle 14 zurkontaktlosen oder kontaktgebundenen Kommunikation auf. Ferner enthält der Datenträger 10 einenals RAM ausgestalteten Arbeitsspeicher 16 und einen nichtflüchtigen überschreibbarenSpeicher 18. Der nichtflüchtige überschreibbare Speicher 18 istim vorliegenden Ausführungsbeispielals Flash-Speicher ausgebildet; in Ausführungsalternativen kann jedocheine andere Speichertechnologie, beispielsweise FeRAM, verwendetwerden.
[0025] Imvorliegenden Ausführungsbeispielweist der nichtflüchtige überschreibbareSpeicher 18 ein Betriebssystem 20, mindestensein Anwendungsprogramm 22 und einen freien Speicherbereich 24 auf. EinProgrammodul 26, das das im folgenden noch genau zu beschreibendeAngriffsschutzverfahren implementiert, ist Teil des Betriebssystems 20.Die Darstellung der Speicherbelegung in 1 ist lediglich schematischzu verstehen. In realen Implementierungen können das Betriebssystem 20,das mindestens eine Anwendungsprogramm 22 und der freie Speicherbereich 24 inineinander verzahnten, nicht-zusammenhängenden Speicherabschnitten angeordnetsein.
[0026] 2 zeigteinen Ausschnitt des nichtflüchtigen überschreibbarenSpeichers 18, der Software 28 enthält. DieseSoftware 28 wird durch das erfindungsgemäße Verfahrengegen Angriffe geschützt. Hierzuwird die Software 28 derart verändert, daß sich bei gleichbleibenderFunktion der Software 28 eine neue Speicherbelegung imnichtflüchtigen überschreibbarenSpeicher 18 ergibt. Im vorliegenden Ausführungsbeispielist die Software 28 das gesamte Betriebssystem 20 oderein Teil davon; in Ausführungsvariantenkann die Software 28 jedoch – zusätzlich zum Betriebssystem 20 oderstattdessen – das Anwendungsprogramm 22 odereinen Teil davon umfassen. Auch das Modul 26, das das erfindungsgemäße Schutzverfahrenimplementiert, kann durch das Verfahren selbst geschützt werdenund damit Teil der Software 28 sein.
[0027] In 2 istdie Software 28 links in einer ersten Konfiguration 30 gezeigt.Diese erste Konfiguration 30 der Software 28 wirddurch einen Schritt des erfindungsgemäßen Verfahrens, der in 2 durch einenoffenen Pfeil dargestellt ist, in eine zweite Konfiguration 32 umgewandelt.In dem in 2 gezeigten, einfachen Beispielunterscheiden sich die beiden Konfigurationen 30, 32 dadurch,daß inder zweiten Konfiguration 32 ein funktionsneutraler Programmabschnitt 34 – z.B. zweiaufeinanderfolgende Befehle zur Negierung von Prozessorregistern – zwischenzwei in der ersten Konfiguration 30 direkt aufeinanderfolgendeAbschnitte 36, 38 der Software 28 eingefügt wurde.Um Platz fürden zusätzlichenProgrammabschnitt 34 zu schaffen, wurde der Abschnitt 38 "nach hinten" verschoben, während derAbschnitt 36 an seiner ursprünglichen Stelle belassen wurde. Umdie Software 28 funktionsfähig zu halten, wurden fernerSprungziele und Referenzen in der gesamten Software 28 andie Verschiebung des Abschnitts 36 angepaßt.
[0028] Dererfindungsgemäße Vorgangder funktionsneutralen Veränderungder Software 28 wird durch das Modul 26 ausgeführt. DiesesModul 26 weist im vorliegenden Ausführungsbeispiel fünf Hauptkomponentenauf, nämlicheinen Sucher, einen Einfüger,einen Mischer, einen Optimierer und einen Relokator. Diese Komponentenwerden durch eine ebenfalls im Modul 26 implementierteSteuerung aufgerufen und in ihrem Zusammenwirken gesteuert. Dieprinzipielle Funktionsweise des Einfügers, Mischers, Optimierersund Relokators ist als solche z.B. aus dem technischen Gebiet desCompilerbaus bekannt.
[0029] Einbeispielhafter Ablauf des erfindungsgemäßen Verfahrens ist in 3 gezeigt.Das Verfahren wird von einem Ereignis 40 angestoßen. DasEreignis 40 kann beispielsweise eine vorbestimmte Ausgabeeines Pseudozufallszahlengenerators ein, die bei jeder Transaktionmit einer Wahrscheinlichkeit von z.B. 1 % auftritt. Der Ablauf in 3 kannjedoch auch periodisch – z.B.nach jeder hundertsten Transaktion – aufgerufen werden. Alternativoder zusätzlichkann das Ereignis 40 auch ein möglicher Manipulationsversuch – z.B. dieEingabe einer falschen Geheimzahl – oder der Empfang eines entsprechenden Befehls über dieKommunikationsschnittstelle 14 sein. Ferner kann vorgesehensein, das Verfahren immer dann oder nur dann auszuführen, wennkeine anderen dringenden Aufgaben zur Bearbeitung durch den Datenträger 10 anstehen.
[0030] Nachdem Start des Verfahrens von 3 in Reaktionauf das Ereignis 40 wird zunächst in Schritt 42 derSucher aufgerufen. Der Sucher verwaltet einen Suchzeiger 44,der, ausgehend von einem zufälligenStartwert, die Software 28 im nichtflüchtigen überschreibbaren Speicher 18 überstreicht.Allgemein identifiziert der Sucher Speicherbereiche im nichtflüchtigen überschreibbarenSpeicher 18, die verschoben und/oder manipuliert werdendürfen. Diesist wichtig, weil z.B. Speicherbereiche, in denen sich in den Adreßraum abgebildeteEin- und Ausgaberegister (memory mapped ports) befinden, nicht verschobenwerden dürfen.Andere Speicherbereiche – z.B.zusammenhängendeDatenbereiche – dürfen nurals Ganzes verschoben werden. Ferner kann die Software 28 Programmabschnitteenthalten, die zwar verschoben, aber nicht modifiziert werden dürfen, z.B.Programmabschnitte mit zwingend vorgegebener, fester Laufzeit.
[0031] Inmanchen Ausgestaltungen kann vorgesehen sein, daß der Sucher die verschiebbaren und/odermodifizierbaren Speicherabschnitte anhand einer Tabelle identifiziert,die bei der Herstellung des Datenträgers 10 vorgegebenwurde und, falls erforderlich, bei jedem Veränderungsschritt an die neue Konfigurationangepaßtwird. Alternativ oder zusätzlichkann vorgesehen sein, daß verschiebbare und/odermodifizierbare Programmcodeteile mit einem vorgegebenen Schlüsselwert(magic number) beginnen, durch den sie vom Sucher eindeutig identifizierbarsind. Schließlichkann der Sucher auch eine Analyse der Software 28 durchführen, umverschiebbare und/oder modifizierbare Abschnitte zu identifizieren.Die dazu erforderlichen Techniken sind als solche bekannt; jedochwäre einesolche Analyse relativ aufwendig zu implementieren und auszuführen.
[0032] InSchritt 46 wird der Suchvorgang von Schritt 42 zufallsgesteuertwiederholt. Wenn in Schritt 46 ein Rücksprung zu Schritt 42 erfolgt,wird der aktuell gefundene Speicherabschnitt unverändert belassen,und ein neuer verschiebbarer und/oder modifizierbarer Abschnittwird gesucht. Wenn in Schritt 46 kein Rücksprung erfolgt, wird dasVerfahren in Schritt 48 mit dem zufälligen Aufruf des Einfügers (Schritt 50)oder des Mischers (Schritt 52) oder des Optimierers (Schritt 54)fortgesetzt.
[0033] DieAufgabe des Einfügersbesteht darin, den vorhandenen Programmcode an einer durch den Suchzeiger 44 angegebenenStelle durch zusätzliche Befehleoder Befehlssequenzen, die keine Auswirkung auf die Funktion desProgrammcodes haben, zu erweitern. Beispielsweise kann der Programmcode durcheinen Sprungbefehl an eine Stelle, die einen sofortigen Rücksprungenthält,ergänztwerden. Weitere Beispiele fürfunktionsinvarianten Programmcode sind die Addition eines Wertesmit darauffolgender Subtraktion des gleichen Wertes oder die zweimaligeaufeinanderfolgende Negie rung eines Prozessorregisters. Es können aucheinzelne Maschinenbefehle durch funktionsidentische Befehle ersetzt werden,beispielsweise ein Sprungbefehl mit kurzer Sprungzielangabe (shortjump) durch einen entsprechenden Sprungbefehl mit langer Sprungzielangabe (longjump). Insgesamt vergrößert sichin Schritt 50 durch die Einfügeoperation der Gesamtumfangdes Programmcodes.
[0034] Derin Schritt 52 aufgerufene Mischer hat die Aufgabe, zweiProgrammabschnitte funktionsinvariant zu vertauschen. Die beidenmiteinander vertauschten Programmcodeteile werden durch entsprechendeSprungbefehle derart miteinander verbunden, daß sich die Ausführungsreihenfolgeder einzelnen Programmbefehle – unddamit die Funktion der Software 28 – nicht ändert. Wenn die zu vertauschendenProgrammbefehle voneinander unabhängig sind, kann deren Ausführungsreihenfolge ohneFunktionsänderungvertauscht werden. In diesem Fall können die zusätzlichenSprungbefehle weggelassen werden. Je nachdem, ob zusätzliche Sprungbefehleerforderlich sind oder nicht, kann sich durch die Ausfühung vonSchritt 52 der Umfang des Programmcodes vergrößern odergleich bleiben. In manchen Ausgestaltungen werden zusätzliche Sprungbefehlejedoch selbst dann eingefügt,wenn dies nicht unbedingt erforderlich wäre, weil die durch die Sprungbefehlehervorgerufene Änderungder Programmabläufebei der Ausführungder Software 28 die Angriffssicherheit weiter erhöht.
[0035] Mitdem in Schritt 54 aufgerufenen Optimierer wird ein früher durchden Einfügereingebrachter Programmcode wieder entfernt. Der Optimierer ist alsodas Gegenstückzum Einfüger.Der Optimierer kann funktionsinvarianten Programmcode erkennen undentfernen, wobei sich der Gesamtumfang des Programmcodes verkleinert.Es ist nicht zwingend erforderlich, daß alle vom Einfüger vorgenommenen Änderungendurch den Optimierer rückstandsfrei entferntwerden können.
[0036] Nachdemeiner der Schritte 50 bis 54 ausgeführt wordenist – inAusführungsalternativenkönnen auchmehrere dieser Schritte kombiniert werden – wird in Schritt 56 derRelokator aufgerufen, um Sprungzieladressen und Referenzen – z.B. Zeigeradressen – in dergesamten Software 28 an die neue Speicherbelegung im nichtflüchtigen überschreibbarenSpeicher 18 anzupassen.
[0037] Diebisher beschriebenen Vorgängewerden in den Schritten 58 und 60 zufallsgesteuertwiederholt, wobei Schritt 58 einen weiteren Einfüge- oder Misch-oder Optimierungsvorgang an der durch den Suchzeiger 44 angegebenenStelle und Schritt 60 das Suchen eines neuen zu veränderndenProgrammabschnitts betrifft. Der zu erwartende Umfang der Veränderungenkann durch Variation der Zufallswahrscheinlichkeiten bei den Schritten 46, 48, 58 und 60 gesteuertwerden. Diese Zufallswahrscheinlichkeiten können in manchen Ausgestaltungenkartenindividuell und/oder individuell zu jeder Abfrage parametrisiertwerden.
[0038] Insgesamtwird durch das in 3 gezeigte Verfahren die Software 28 stellenweiseverändert, umeine neue Speicherbelegung im nichtflüchtigen überschreibbaren Speicher 18 zuerhalten. Die geänderteSoftware ist nach wie vor funktionsfähig und funktionsidentischzu der urspünglichenSoftware.
[0039] Beidem gesamten Verfahrensablauf von 3 muß daraufgeachtet werden, daß Ablaufsequenzen,die Schreibzugriffe auf den nichtflüchtigen überschreibbaren Speicher 18 umfassen,atomar, also entweder ganz oder gar nicht, ausgeführt werden.Dies kann durch eine geeignete Verwaltung von Rückführdaten (rollback data) erzieltwerden. Durch die atomare Verfahrensausführung wird sichergestellt,daß imFalle einer plötzlichenSpannungsunterbrechung währendder Ausführungdes Verfahrens von 3 die gerade veränderte Software 28 ineinem funktionsfähigenoder zumindest wiederherstellungsfähigen Zustand verbleibt.
[0040] Inmanchen Ausführungsformenist das Verfahren derart ausgestaltet, daß die Software 28 bei deneinzelnen Veränderungsvorgängen möglichst kompaktbleibt. Es sind jedoch auch Ausführungsvariantenvorgesehen, bei denen der gesamte zur Verfügung stehende Speicherplatzim nichtflüchtigen überschreibbarenSpeicher 18 genutzt wird. Hierdurch kann eine besondersgute Verschleierungswirkung erzielt werden. Wenn zusätzlicherSpeicher benötigtwird – z.B.von dem Anwendungsprogramm 22 –, kann dieser durch einenAufruf des Optimierers gesucht und freigegeben werden.
[0041] Ineiner Ausführungsalternativewird das Verfahren gemäß 3 nichtoder nicht nur während desregulärenBetriebs des Datenträgers 10,sondern auch oder ausschließlichbeim Laden des Betriebssystems 20 und/oder des Anwendungsprogramms 22 inden nichtflüchtigen überschreibbarenSpeicher 18 angestoßen.Das Verfahren selbst wird in dieser Ausführungsalternative nach wievor durch den Prozessor 12 des Datenträgers 10 ausgeführt. Essind jedoch weitere Ausgestaltungen der Erfindung vorgesehen, indenen ein Verfahren wie in 3 nichtinnerhalb des Datenträgers 10,sondern extern ausgeführtwird. Eine derartige Ausführungsformist in 4 veranschaulicht.
[0042] DerAblauf von 4 geht von der Software 28 ihrerersten Konfiguration 30 aus. Ein Verarbeitungsrechner 70,der als leistungsfähigerComputer mit mindestens einem Prozessor ausgestaltet ist und einesichere Umgebung bereitstellt, führtein Verfahren wie in 3 aus, um die Software 28 ineine Vielzahl unterschiedlicher zweiter Konfigurationen 32A, 32B, 32C,... zu überführen. Jededieser zweiten Konfigurationen 32A, 32B, 32C,... – imfolgenden zusammenfassend mit 32x bezeichnet – ist für einen einzigenDatenträger 10 vorgesehen.Mit anderen Worten wird eine kartenindividuelle zweite Konfiguration 32x derSoftware 28 erstellt. In einer Ausführungsalternative wird jedezweite Konfiguration 32x nicht nur für einen einzigen Datenträger 10,sondern füreine relativ kleine Gruppe von Datenträgern – z.B. zehn Datenträger – verwendet.
[0043] Diediversen zweiten Konfigurationen 32x der Software 28 können aufeinem computerlesbaren Medium 72 – z.B. einer Festplatte oderCD-ROM – zwischengespeichertwerden. Bei der Herstellung oder Initialisierung oder Personalisierungeines Datenträgers 10 wirddie individualisierte Software 28 über ein Terminal 74 inden Datenträger 10 geladen. Hierbeikann der Datenträger 10 nachdem Stand der Technik – alsoohne die Funktionalität,weitere Veränderungender Software ereignisgesteuert durchzuführen – ausgestaltet sein. Der Datenträger 10 kann aberauch gemäß der vorliegendenErfindung ausgestaltet sein und bei Bedarf die in ihm gespeicherte Software 28 nochmalsverändern.
[0044] Ineiner besonders einfachen Realisierung des in 4 gezeigtenVorgangs ist vorgesehen, die einzelnen kompilierten Programmodule,die in ihrer Summe die Software 28 bilden, vor dem Ladenin den nichtflüchtigen überschreibbarenSpeicher 18 des Datenträgers 10 inzufälligerReihenfolge zu linken. Durch diese Vorgehensweise läßt sicheine kartenindividuelle Belegung des nichtflüchtigen überschreibbaren Speichers 18 mitsehr geringem Aufwand realisieren.
权利要求:
Claims (22)
[1] Verfahren zum Schutz von Software (28),die zur Ausführungdurch einen Prozessor (12) eines tragbaren Datenträgers (10)vorgesehen ist oder durch einen solchen Prozessor (12)ausgeführtwird, gegen Angriffe, wobei die Software (28) zum Laden ineinen nichtflüchtigen überschreibbarenSpeicher (18) des tragbaren Datenträgers (10) vorgesehenist oder sich in einen solchen Speicher (18) befindet, dadurchgekennzeichnet, daß ausgehendvon einer lauffähigenersten Konfiguration (30) der Software (28) zumindestein Abschnitt (38) der Software (28) zumindesthinsichtlich seiner Position verändertwird, um mindestens eine lauffähigezweite Konfiguration (32, 32x) der Software (28)zu erhalten, die bei gleicher Funktion eine veränderte Speicherbelegung im nichtflüchtigen überschreibbarenSpeicher (18) des tragbaren Datenträgers (10) aufweist.
[2] Verfahren nach Anspruch 1, dadurch gekennzeichnet,daß dieVeränderungder Software (28) von dem Prozessor (12) des tragbarenDatenträgers(10) ausgeführtwird, währendsich die Software (28) in dem nichtflüchtigen überschreibbaren Speicher (18) desDatenträgers(10) befindet.
[3] Verfahren nach Anspruch 1 oder Anspruch 2, dadurchgekennzeichnet, daß derVorgang der Veränderungder Software (28) durch ein vorbestimmtes Ereignis (40)angestoßenwird.
[4] Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet,daß dasvorbestimmte Ereignis (40) ein Zufallsereignis und/oderein zählergesteuertesEreignis und/oder ein durch einen möglichen ManipulationsversuchausgelöstesEreignis und/oder ein extern ausgelöstes Ereignis ist.
[5] Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet,daß dieVeränderungder Software (28) von einem Prozessor eines externen Verarbeitungsrechners(70) ausgeführtwird, um aus der vorgegebenen ersten Konfiguration (30)der Software (28) mindestens eine für den Datenträger (10) odereine Gruppe von Datenträgern(10) individuelle zweite Konfiguration (32, 32x)zu erhalten.
[6] Verfahren zur Erzeugung von Software (28), diezur Ausführungdurch eine Mehrzahl von tragbaren Datenträgern (10) vorgesehenist, wobei jeder der tragbaren Datenträger (10) einen Prozessor(12) und mindestens einen nichtflüchtigen überschreibbaren Speicher (18)aufweist, dadurch gekennzeichnet, daß ausgehend von einer lauffähigen erstenKonfiguration (30) der Software (28) eine Mehrzahlvon lauffähigenzweiten Konfigurationen (32, 32x) der Software(28) erzeugt wird, indem jeweils zumindest ein Abschnitt(38) der Software (28) zumindest hinsichtlichseiner Position verändertwird, um je eine lauffähigezweite Konfiguration (32, 32x) der Software (28) zuerhalten, die bei gleicher Funktion eine veränderte Speicherbelegung imnichtflüchtigen überschreibbarenSpeicher (18) des tragbaren Datenträgers (10) aufweist,wobei jede zweite Konfiguration (32, 32x) derSoftware (28) aus der Mehrzahl der so erzeugten zweitenKonfigurationen (32, 32x) zum Laden in den nichtflüchtigen überschreibbarenSpeicher (18) je eines der tragbaren Datenträger (10)oder je einer Gruppe von tragbaren Datenträgern (10) vorgesehen ist.
[7] Verfahren nach Anspruch 6, dadurch gekennzeichnet,daß dasVerfahren ferner den Schritt aufweist, jede zweite Konfiguration(32, 32x) der Software (28) aus der Mehrzahlder erzeugten zweiten Konfigurationen (32, 32x)in den nichtflüchtigen überschreibbarenSpeicher (18) je eines der tragbaren Datenträger (10)oder je einer Gruppe von tragbaren Datenträgern (10) zu laden.
[8] Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet,daß dieVeränderungder Software (28) zumindest eine Verschiebung eines Abschnitts(38) der Software (28) und/oder eine Vertauschungzweier Abschnitte der Software (28) umfaßt.
[9] Verfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet,daß dieVeränderungder Software (28) einen vorbereitenden Schritt (42)des Suchens nach einem verschiebbaren und/oder modifizierbaren Abschnittder Software (28) umfaßt.
[10] Verfahren nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet,daß dieVeränderungder Software (28) das Einfügen von funktionsneutralen Befehlenund/oder Befehlssequenzen umfaßt.
[11] Verfahren nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet,daß dieVeränderung derSoftware (28) das Entfernen von funktionsneutralen Befehlenund/oder Befehlssequenzen umfaßt.
[12] Verfahren nach einem der Ansprüche 1 bis 11, dadurch gekennzeichnet,daß dieVeränderung derSoftware (28) einen abschließenden Schritt (56) desAnpassens von Sprungzieladressen und/oder Referenzen an die veränderte Speicherbelegungumfaßt.
[13] Verfahren nach einem der Ansprüche 1 bis 12, dadurch gekennzeichnet,daß dieVeränderung derSoftware (28) zufallsgesteuert durchgeführt wird.
[14] Verfahren nach einem der Ansprüche 1 bis 13, dadurch gekennzeichnet,daß durchdie Veränderungder Software (28) das Zeitverhalten bei der Ausführung derSoftware (28) verändertwird.
[15] Verfahren nach einem der Ansprüche 1 bis 14, dadurch gekennzeichnet,daß beider Veränderungder Software (28) der ganze zur Verfügung stehende Speicherbereichgenutzt wird.
[16] Verfahren nach einem der Ansprüche 1 bis 15, dadurch gekennzeichnet,daß dieSoftware (28) ein Betriebssystem (20) des tragbarenDatenträgers (10)oder ein Teil davon und/oder ein von dem Prozessor (12)des Datenträgers(10) auszuführendes Anwendungsprogramm(22) oder ein Teil davon ist.
[17] Verfahren nach einem der Ansprüche 1 bis 16, dadurch gekennzeichnet,daß dernichtflüchtige überschreibbareSpeicher (18) ein Flash-Speicher oder ein FeRAM ist.
[18] Verfahren nach einem der Ansprüche 1 bis 17, dadurch gekennzeichnet,daß derDatenträger (10)frei von maskenprogrammiertem Festwertspeicher für Programmcode ist.
[19] Computerprogrammprodukt, das Programmbefehle aufweist,die mindestens einen Prozessor zur Ausführung eines Verfahrens nacheinem der Ansprüche1 bis 18 veranlassen.
[20] Computerprogrammprodukt, das Software (28),die zur Ausführungdurch eine Mehrzahl von tragbaren Datenträgern (10) vorgesehenist, in einer Mehrzahl von zweiten Konfigurationen (32, 32x),die durch ein Verfahren nach Anspruch 6 oder einem der Ansprüche 8 bis18, jeweils rückbezogenauf Anspruch 6, erzeugt worden sind, enthält.
[21] Programmgesteuerte Vorrichtung (10, 70), diedazu eingerichtet ist, ein Verfahren nach einem der Ansprüche 1 bis18 auszuführen.
[22] Mehrzahl von tragbaren Datenträgern (10), die jeweilseinen Prozessor (12) und mindestens einen nichtflüchtigen überschreibbarenSpeicher (18) aufweisen, wobei der nichtflüchtige überschreibbare Speicher(18) eine fürjeden Datenträger(10) oder jede Gruppe von Datenträgern (10) individuelleSoftware (28) enthält,die durch ein Verfahren nach Anspruch 6 oder einem der Ansprüche 7 bis18, jeweils rückbezogenauf Anspruch 6, erzeugt worden ist.
类似技术:
公开号 | 公开日 | 专利标题
Gruss et al.2017|Strong and efficient cache side-channel protection using hardware transactional memory
Smith2013|Trusted computing platforms: design and applications
US9400668B2|2016-07-26|Computer program product containing instructions for providing a processor the capability of executing an application derived from a compiled form
TWI604380B|2017-11-01|非對稱遮罩乘法
CN106462708B|2019-05-14|认证变量的管理方法和装置
US10839085B1|2020-11-17|Detection and healing of vulnerabilities in computer code
TWI468980B|2015-01-11|Dynamic execution prevention of program design to suppress return orientation
US8756434B2|2014-06-17|System and method for executing an encrypted binary from a memory pool
Raj et al.2016|fTPM: A Software-Only Implementation of a {TPM} Chip
US6594761B1|2003-07-15|Tamper resistant software encoding
US6880037B2|2005-04-12|Method of data caching on a smartcard
KR100900627B1|2009-06-02|메모리카드
US7062623B2|2006-06-13|Method and device for providing hidden storage in non-volatile memory
CN101281459B|2012-08-22|受保护的功能调用
DK2164031T4|2017-10-16|Method and device for protecting a microcircuit against attack
US10509734B2|2019-12-17|Cryptographic pointer address encoding
US7636844B2|2009-12-22|Method and system to provide a trusted channel within a computer system for a SIM device
AU681754B2|1997-09-04|Data exchange system comprising portable data processing units
DE60302844T2|2006-06-29|Halbleitervorrichtung mit Verschlüsselung, Halbleitervorrichtung mit externer Schnittstelle, und Inhaltswiedergabeverfahren
CN101501642B|2015-09-30|使用虚拟机启动的便携式大容量存储装置的方法
JP3459649B2|2003-10-20|Data exchange system including portable data processing unit
US6779114B1|2004-08-17|Tamper resistant software-control flow encoding
CN103778075B|2017-01-18|安全管理单元、包括它的主机控制器接口及其操作方法
TWI259365B|2006-08-01|Microprocessor circuit for data carriers and method for organizing access to data stored in a memory
CN101281506B|2011-10-26|数据处理系统内基于存储器域的安全控制
同族专利:
公开号 | 公开日
DE102004011488B4|2007-07-05|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
WO2000039956A1|1998-12-30|2000-07-06|Rainbow Technologies, Inc.|A method of software protection using a random code generator|
WO2002046890A2|2000-12-08|2002-06-13|Cloakware Corporation|System and method for protecting computer software from a white box attack|
US20020188932A1|2001-06-07|2002-12-12|Robert Hundt|Optimizing an executable computer program having address-bridging code segments|DE102006038877A1|2006-08-18|2008-04-03|Giesecke & Devrient Gmbh|Manipulationsgesicherte Einheit, Verfahren für eine manipulationsgesicherte Einheit sowie Speichermedium|
EP1995682A1|2007-05-21|2008-11-26|Stmicroelectronics Sa|Personalisierung eines Mikroprozessors und Datensicherungsverfahren|
WO2010128060A1|2009-05-05|2010-11-11|Giesecke & Devrient Gmbh|Verfahren zum schutz von auf einem tragbaren datenträger gespeicherter software und tragbarer datenträger|
WO2014023431A1|2012-08-10|2014-02-13|Giesecke & Devrient Gmbh|Verfahren zum erzeugen von ausf?hrbarem programmcode|WO2000072112A2|1999-05-12|2000-11-30|Fraunhofer Crcg, Inc.|Obfuscation of executable code|
WO2001086372A2|2000-05-12|2001-11-15|Xtreamlok Pty. Ltd.|Information security method and system|
US7383443B2|2002-06-27|2008-06-03|Microsoft Corporation|System and method for obfuscating code using instruction replacement scheme|DE102012008988A1|2012-05-04|2013-11-07|Giesecke & Devrient Gmbh|Portabler Datenträger|
法律状态:
2005-10-13| OP8| Request for examination as to paragraph 44 patent law|
2008-01-03| 8364| No opposition during term of opposition|
2017-07-06| R081| Change of applicant/patentee|Owner name: GIESECKE+DEVRIENT MOBILE SECURITY GMBH, DE Free format text: FORMER OWNER: GIESECKE & DEVRIENT GMBH, 81677 MUENCHEN, DE |
2021-10-01| R119| Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee|
优先权:
申请号 | 申请日 | 专利标题
DE102004011488A|DE102004011488B4|2004-03-09|2004-03-09|Schutz von Software gegen Angriffe|DE102004011488A| DE102004011488B4|2004-03-09|2004-03-09|Schutz von Software gegen Angriffe|
[返回顶部]